﻿namespace MaterialDesignThemes.Wpf.Transitions;

[MarkupExtensionReturnType(typeof(TransitionEffectBase))]
public class TransitionEffectExtension : MarkupExtension
{
    public TransitionEffectExtension()
    {
        Kind = TransitionEffectKind.None;
    }

    public TransitionEffectExtension(TransitionEffectKind kind)
    {
        Kind = kind;
    }

    public TransitionEffectExtension(TransitionEffectKind kind, TimeSpan duration)
    {
        Kind = kind;
        Duration = duration;
    }

    [ConstructorArgument("kind")]
    public TransitionEffectKind Kind { get; set; }

    [ConstructorArgument("duration")]
    public TimeSpan? Duration { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Duration.HasValue ? new TransitionEffect(Kind, Duration.Value) : new TransitionEffect(Kind);
    }
}
